<?php

class Application_Form_formRh extends Zend_Form
{

    public function init()
    {
        $this->addElementPrefixPath('My_Filter', 'My/Filter', 'FILTER');
        $this->addElementPrefixPath('My_Validate', 'My/Validate', 'VALIDATE');

        $validacaoData = new Zend_Validate_Date('dd/MM/yyyy');
        $validacaoData->setMessages(array( // mensagens de erro
            Zend_Validate_Date::INVALID_DATE => 'A data \'%value%\' não é válida.',
            Zend_Validate_Date::FALSEFORMAT => 'O formato de data \'%value%\' não é válido.'
        ));

        $this->clearDecorators();
        $decorators = array(
            array('ViewHelper'),
            array('Errors'),
            array('Label',array(
                'class' => 'leftalign'
            )),
            array('HtmlTag',array('tag' => 'li'))
        );

        $this->setName('rh')
                ->setAction('Rh/save');

        $id         = new Zend_Form_Element_Hidden('id');

        // Campo 'CPF'
        $cpf = new Zend_Form_Element_Text('cpf');
        $cpf->setLabel('CPF')
            ->setAttrib('size', 14)
            ->addFilter('Digits')
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('Cpf')
            ->setRequired(true)
            ->setDecorators($decorators);

        // Campo 'Primeiro nome'
        $firstname = new Zend_Form_Element_Text('firstname');
        $firstname->setLabel('Primeiro nome')
            ->addValidator('NotEmpty')
            ->setAttrib('Class', 'span5')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addFilter('StringToUpper')
            ->setDecorators($decorators);

        // Campo 'Sobrenome'
        $lastname = new Zend_Form_Element_Text('lastname');
        $lastname->setLabel('Sobrenome')
            ->addValidator('NotEmpty')
            ->setAttrib('Class', 'span5')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addFilter('StringToUpper')
            ->setDecorators($decorators);

        // Campo 'Nome de guerra'
        $nome_guerra = new Zend_Form_Element_Text('nome_guerra');
        $nome_guerra->setLabel('Nome de guerra')
            ->addValidator('NotEmpty')
            ->setAttrib('Class', 'span3')
            ->setRequired(true)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addFilter('StringToUpper')
            ->setDecorators($decorators);

        // Campo 'Sexo'
        $sexo = new Zend_Form_Element_Select('sexo');
        $sexo->setLabel('Sexo');
        $sexo->setMultiOptions(array(null));
        $sexo->addMultiOption('-','--');
        $sexo->addMultiOption('F','FEMININO');
        $sexo->addMultiOption('M','MASCULINO');
        $sexo->setDecorators($decorators)
             ->setRequired(true);

        // Campo 'Endereço de correio eletrônico (e-mail)'
        $email = new Zend_Form_Element_Text('email');
        $email->setLabel('E-mail')
              ->addValidator('NotEmpty')
              ->addValidator('EmailAddress')
              ->setAttrib('Class', 'span5')
              ->setRequired(true)
              ->addFilter('StripTags')
              ->addFilter('StringTrim')
              ->addFilter('EmailDPF')
              ->setDecorators($decorators);

        // Campo 'Formação'
        $formacao = new Zend_Form_Element_Select('formacao');
        $formacao->setLabel('Formação');
        $formacao->setMultiOptions(array(null));
        $formacao->addMultiOption('G','GRADUAÇÃO');
        $formacao->addMultiOption('E','ESPECIALIZAÇÃO');
        $formacao->addMultiOption('M','MESTRADO');
        $formacao->addMultiOption('D','DOUTORADO');
        $formacao->setDecorators($decorators);

        // Campo 'Curso'
        $formacao_curso = new Zend_Form_Element_Text('formacao_nome');
        $formacao_curso->setLabel('Curso')
            ->setAttrib('Class', 'span5')
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->setDecorators($decorators);

        // Campo 'Formação comprovada'
        $formacao_comprovada = new Zend_Form_Element_Checkbox('formacao_comprovada');
        $formacao_comprovada->setLabel('Formação comprovada')
            ->setDecorators($decorators);
        
        // Campo 'Servidor da PF'
        $servidor_dpf = new Zend_Form_Element_Checkbox('servidor_dpf');
        $servidor_dpf->setLabel('Servidor da PF')
            ->setDecorators($decorators);

        // Campo 'Cargo'
        $cargo = new Zend_Form_Element_Select('cargo');
        $cargo->setLabel('Cargo');
        $db = Zend_Registry::get('moodle');
        $select = $db->select()->from('gesac_cargos')->order('titulo_cargo');
        $cargos = $db->fetchAll($select);
        $cargo->setMultiOptions(array(null));
        foreach($cargos as $row):
          $cargo->addMultiOption($row->sigla_cargo,$row->titulo_cargo);
        endforeach;
        $cargo->setDecorators($decorators);

        // Campo 'Classe'
        $classe = new Zend_Form_Element_Select('classe');
        $classe->setLabel('Classe');
        $classe->setMultiOptions(array(null))
               ->addMultiOption('--','--')
               ->addMultiOption('E','ESPECIAL')
               ->addMultiOption('1','PRIMEIRA')
               ->addMultiOption('2','SEGUNDA')
               ->addMultiOption('3','TERCEIRA')
               ->addMultiOption('E3','ESPECIAL-III')
               ->addMultiOption('E2','ESPECIAL-II')
               ->addMultiOption('E1','ESPECIAL-I')
               ->addMultiOption('C6','C-VI')
               ->addMultiOption('C5','C-V')
               ->addMultiOption('C4','C-IV')
               ->addMultiOption('C3','C-III')
               ->addMultiOption('C2','C-II')
               ->addMultiOption('C1','C-I')
               ->addMultiOption('B6','B-VI')
               ->addMultiOption('B5','B-V')
               ->addMultiOption('B4','B-IV')
               ->addMultiOption('B3','B-III')
               ->addMultiOption('B2','B-II')
               ->addMultiOption('B1','B-I')
               ->addMultiOption('A5','A-V')
               ->addMultiOption('A4','A-IV')
               ->addMultiOption('A3','A-III')
               ->addMultiOption('A2','A-II')
               ->addMultiOption('A1','A-I');
        $classe->setDecorators($decorators);

        // Campo 'Matrícula DPF'
        $matricula = new Zend_Form_Element_Text('matricula');
        $matricula->setLabel('Matrícula DPF')
            ->setAttrib('size', 10)
            ->addFilter('Int')
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->setDecorators($decorators);

        // Campo 'Matrícula SIAPE'
        $siape = new Zend_Form_Element_Text('siape');
        $siape->setLabel('Matrícula SIAPE')
            ->setAttrib('size', 10)
            ->addFilter('Int')
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->setDecorators($decorators);

        // Campo 'Lotação'
        $lotacao = new Zend_Form_Element_Text('lotacao');
        $lotacao->setLabel('Unidade de lotação')
            ->setAttrib('Class', 'span5')
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->setDecorators($decorators);

        // Campo 'Exercício'
        $exercicio = new Zend_Form_Element_Text('exercicio');
        $exercicio->setLabel('Unidade de exercício')
            ->setAttrib('Class', 'span5')
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->setDecorators($decorators);

        // Campo 'Banco'
        $banco = new Zend_Form_Element_Text('banco');
        $banco->setLabel('Banco (número)')
            ->setAttrib('size', 3)
            ->addFilter('Int')
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->setDecorators($decorators);

        // Campo 'Agência'
        $banco_agencia = new Zend_Form_Element_Text('banco_agencia');
        $banco_agencia->setLabel('Agência')
            ->setAttrib('size', 15)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->setDecorators($decorators);

        // Campo 'Conta'
        $banco_conta = new Zend_Form_Element_Text('banco_conta');
        $banco_conta->setLabel('Conta')
            ->setAttrib('size', 15)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->setDecorators($decorators);

        // Campo 'Endereço'
        $address = new Zend_Form_Element_Text('address');
        $address->setLabel('Endereço')
            ->setAttrib('Class', 'span5')
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->setDecorators($decorators);

        // Campo 'CEP'
        $cep = new Zend_Form_Element_Text('cep');
        $cep->setLabel('CEP')
            ->setAttrib('size', 10)
            ->addFilter('Digits')
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->setDecorators($decorators);

        // Campo 'Bairro'
        $bairro = new Zend_Form_Element_Text('bairro');
        $bairro->setLabel('Bairro')
            ->setAttrib('Class', 'span5')
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->setDecorators($decorators);

        // Campo 'Cidade'
        $city = new Zend_Form_Element_Text('city');
        $city->setLabel('Cidade')
            ->setAttrib('Class', 'span5')
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->setDecorators($decorators);

        // Campo 'UF'
        $estado = new Zend_Form_Element_Select('estado');
        $estado->setLabel('UF');
        $estado->setMultiOptions(array(null))
               ->addMultiOption('--','--')
               ->addMultiOption('AC','ACRE')
               ->addMultiOption('AL','ALAGOAS')
               ->addMultiOption('AM','AMAZONAS')
               ->addMultiOption('AP','AMAPÁ')
               ->addMultiOption('BA','BAHIA')
               ->addMultiOption('CE','CEARÁ')
               ->addMultiOption('DF','DISTRITO FEDERAL')
               ->addMultiOption('ES','ESPÍRITO SANTO')
               ->addMultiOption('GO','GOIÁS')
               ->addMultiOption('MA','MARANHÃO')
               ->addMultiOption('MG','MINAS GERAIS')
               ->addMultiOption('MS','MATO GROSSO DO SUL')
               ->addMultiOption('MT','MATO GROSSO')
               ->addMultiOption('PA','PARÁ')
               ->addMultiOption('PB','PARAÍBA')
               ->addMultiOption('PE','PERNAMBUCO')
               ->addMultiOption('PI','PIAUÍ')
               ->addMultiOption('PR','PARANÁ')
               ->addMultiOption('RJ','RIO DE JANEIRO')
               ->addMultiOption('RN','RIO GRANDE DO NORTE')
               ->addMultiOption('RO','RONDÔNIA')
               ->addMultiOption('RR','RORAIMA')
               ->addMultiOption('RS','RIO GRANDE DO SUL')
               ->addMultiOption('SC','SANTA CATARINA')
               ->addMultiOption('SE','SERGIPE')
               ->addMultiOption('SP','SÃO PAULO')
               ->addMultiOption('TO','TOCANTINS');
        $estado->setDecorators($decorators);

        // Campo ' País'
        $country = new Zend_Form_Element_Select('country');
        $country->setLabel('País');
        $country->setMultiOptions(array(null))
               ->addMultiOption('AO','ANGOLA')
               ->addMultiOption('AR','ARGENTINA')
               ->addMultiOption('BO','BOLÍVIA')
               ->addMultiOption('BR','BRASIL')
               ->addMultiOption('CV','CABO VERDE')
               ->addMultiOption('CA','CANADÁ')
               ->addMultiOption('CL','CHILE')
               ->addMultiOption('CO','COLÔMBIA')
               ->addMultiOption('CR','COSTA RICA')
               ->addMultiOption('CU','CUBA')
               ->addMultiOption('EC','EQUADOR')
               ->addMultiOption('EL','EL SALVADOR')
               ->addMultiOption('ES','ESPANHA')
               ->addMultiOption('FR','FRANÇA')
               ->addMultiOption('GU','GUATEMALA')
               ->addMultiOption('GW','GUINÉ-BISSAU')
               ->addMultiOption('GB','GRÃ-BRETANHA (REINO UNIDO)')
               ->addMultiOption('HA','HAITÍ')
               ->addMultiOption('HO','HONDURAS')
               ->addMultiOption('IT','ITÁLIA')
               ->addMultiOption('JP','JAPÃO')
               ->addMultiOption('MU','MAURÍCIO')
               ->addMultiOption('MX','MÉXICO')
               ->addMultiOption('MZ','MOÇAMBIQUE')
               ->addMultiOption('NI','NICARÁGUA')
               ->addMultiOption('PA','PANAMÁ')
               ->addMultiOption('PY','PARAGUAI')
               ->addMultiOption('PE','PERU')
               ->addMultiOption('PT','PORTUGAL')
               ->addMultiOption('RD','REPÚBLICA DOMINICANA')
               ->addMultiOption('ST','SÃO TOMÉ E PRÍNCIPE')
               ->addMultiOption('TP','TIMOR LESTE')
               ->addMultiOption('TT','TRINIDAD E TOBAGO')
               ->addMultiOption('US','ESTADOS UNIDOS DA AMÉRICA')
               ->addMultiOption('UY','URUGUAI')
               ->addMultiOption('VE','VENEZUELA');
        $country->setDecorators($decorators);

        // Campo 'Telefone funcional'
        $telefone1 = new Zend_Form_Element_Text('telefone1');
        $telefone1->setLabel('Telefone funcional')
            ->setAttrib('size', 15)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->setDecorators($decorators);

        // Campo 'Telefone residencial'
        $telefone2 = new Zend_Form_Element_Text('telefone2');
        $telefone2->setLabel('Telefone residencial')
            ->setAttrib('size', 15)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->setDecorators($decorators);

        // Campo 'Telefone celular'
        $telefone3 = new Zend_Form_Element_Text('telefone3');
        $telefone3->setLabel('Telefone celular')
            ->setAttrib('size', 15)
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->setDecorators($decorators);

        // Campo 'Idioma'
        $lang = new Zend_Form_Element_Select('lang');
        $lang->setLabel('Idioma');
        $lang->setMultiOptions(array(null));       
        $lang->addMultiOption('pt_br_utf8','PORTUGUÊS (BRASIL)')
             ->addMultiOption('es_utf8','ESPANHOL')
             ->addMultiOption('en_utf8','INGLÊS');
        $lang->setDecorators($decorators);

        // Campo 'Informações adicionais'
        $outras_informacoes = new Zend_Form_Element_Textarea('outras_informacoes');
        $outras_informacoes->setLabel('Informações adicionais')
            ->setAttribs(array('style' => 'width:500px; height:100px; ' ))
            ->setDecorators($decorators);

         // Campo 'username'
        $username = new Zend_Form_Element_Text('username');
        $username->setLabel('username')
            ->setAttrib('size', 14)
            ->addFilter('Digits')
            ->addFilter('StripTags')
            ->addFilter('StringTrim')
            ->addValidator('Cpf')
            ->setDecorators($decorators);

        // Botão 'Enviar'
        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setLabel('Enviar')
                ->setAttrib('id', 'submitbutton')
                ->setDecorators(array(
            array('ViewHelper'),
            array('HtmlTag',
                array(
                'tag' => 'li',
                'class' => 'submit'))
        ));

        $this->setDecorators(array(
           'FormElements',
            array('HtmlTag',array('tag'=>'ul')),
            array(
                array(
                    'DivTag'=>'HtmlTag'
                ),
                array(
                    'tag'=>'div',
                    'class'=>'FormDiv'
                )
            ),
            'Form'
        ));

        $this->addElements(array(
            $id,
            $email, 
            $firstname, 
            $lastname, 
            $nome_guerra, 
            $cpf, 
            $sexo, 
            $cargo,$classe,$matricula,$siape,$lotacao,$exercicio,
            $formacao,$formacao_curso,$formacao_comprovada, 
            $banco,$banco_agencia,$banco_conta, 
            $address, 
            $cep, 
            $bairro, 
            $city, 
            $estado, 
            $country, 
            $telefone1, 
            $telefone2, 
            $telefone3, 
            $lang, 
            $outras_informacoes,
            $username,
            $submit));

    }

}